package org.cloud.zuul.filter;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;

/**
 * 
 * <p>
 * Description: 该Filter累主要可用于开发  权限控制，ip访问限制等
 * </p>
 * 
 * @author: zsljava@163.com
 * @version 1.0.0
 * <p>
 * History:
 * -----------------------------------------------
 * @Date: 2017年3月16日
 * @author: zsljava@163.com
 * @version 1.0.0
 * @OP: Create
 * -----------------------------------------------
 * </p>
 *
 * @since
 * @see
 */
public class SimpleFilter extends ZuulFilter {

	private static Logger log = LoggerFactory.getLogger(SimpleFilter.class);

	/**
	 * 返回过滤器的类型。有pre、route、post、error等几种取值，分别对应上文的几种过滤器。详细可以参考com.netflix.zuul.ZuulFilter.filterType() 中的注释。
	 */
	@Override
	public String filterType() {
		return "pre";
	}

	/**
	 * 返回一个int值来指定过滤器的执行顺序，不同的过滤器允许返回相同的数字。
	 */
	@Override
	public int filterOrder() {
		return 1;
	}

	/**
	 * 返回一个boolean值来判断该过滤器是否要执行，true表示执行，false表示不执行。
	 */
	@Override
	public boolean shouldFilter() {
		return true;
	}

	/**
	 * 过滤器的具体逻辑。本例中，我们让它打印了请求的HTTP方法以及请求的地址。
	 */
	@Override
	public Object run() {
		RequestContext ctx = RequestContext.getCurrentContext();
		HttpServletRequest request = ctx.getRequest();

		log.info(String.format("%s request to %s", request.getMethod(), request.getRequestURL().toString()));

		return null;
	}

}